# -*- coding: utf-8 -*-
# author : hxt
#   date : 2025/2/20
import os
import sys

'''
框架运行的入口
'''

import pytest
from apirun.core.CasesPlugin import CasesPlugin
from allure_combine import combine_allure

def run():
    # 获取 python运行参数
    # 1. 读取命令行传入的参数
    pytest_cmd_config = []
    for arg in sys.argv:
        if arg.startswith("-"):
            pytest_cmd_config.append(arg)

    # print(os.path.join(os.path.dirname(__file__), "core/ApiTestRunner.py"))

    # 2. 构建pytest参数
    pytest_args = [os.path.join(os.path.dirname(__file__), "core/ApiTestRunner.py"),
                   "--clean-alluredir", #清空alluredir中的历史数据
                   ]
    pytest_args.extend(pytest_cmd_config)

    # print("run pytest：", pytest_args)

    pytest.main(pytest_args, plugins=[CasesPlugin()])

if __name__ == '__main__':
    # # 1、最基础，自己去找测试用例
    # pytest.main(['-vs'])

    # 2.1 生成测试报告
    pytest_args = ['-s', '-v', '--capture=sys',  # 用于显示输出调试信息、设置级别、打开实时输出
                   './core/ApiTestRunner.py',  # 指定运行文件
                   '--clean-alluredir',  # 清空alluredir中的历史数据
                   '--alluredir=allure-results',  # 执行过程的数据存放到allure-results中
                   '--type=yaml',  # 指定文件运行类型yaml 或 excel
                   '--cases=../testcase/examples-ds',  # 指定运行路径
                   "--reruns=0",  # 重新运行次数
                   "--reruns-delay=3",  # 等待运行秒数
                   ]
    pytest.main(pytest_args, plugins=[CasesPlugin()])

    # 2.2 基于数据生成 allure-html测试报告（allure命令只能在控制台操作）
    os.system('allure generate -c -o allure-report')

    # 2.3 扩展：allure报告必须以服务的形式打开，即双击index.html文件可直接打开文件查看
    combine_allure('./allure-report')